home *** CD-ROM | disk | FTP | other *** search
/ Windows 3-Pak 2 - Disc 2 / Infomagic - Windows 3-Pak Volume 2 (Disc 2 of 3).iso / Chat---IRC / TURBOIRC.ZIP / data1.cab / TurboIRC_Help_Files / ircx.txt < prev    next >
Text File  |  1999-05-05  |  93KB  |  2,561 lines

  1.  
  2.  
  3.  
  4.              INTERNET-DRAFT                                   Dalen Abraham
  5.              Expires: December 16, 1998               Microsoft Corporation
  6.                                                                    June 1998
  7.  
  8.  
  9.  
  10.                   Extensions to the Internet Relay Chat Protocol (IRCX)
  11.                             draft-pfenning-irc-extensions-04.txt
  12.  
  13.  
  14.           1.   Status of this Memo
  15.  
  16.              This document is an Internet-Draft. Internet-Drafts are
  17.              working documents of the Internet Engineering Task Force
  18.              (IETF), its areas, and its working groups. Note that other
  19.              groups may also distribute working documents as Internet
  20.              Drafts.
  21.  
  22.              Internet-Drafts are draft documents valid for a maximum of six
  23.              months and may be updated, replaced, or obsoleted by other
  24.              documents at any time. It is inappropriate to use Internet-
  25.              Drafts as reference material or to cite them other than as
  26.              "work in progress."
  27.  
  28.              To view the entire list of current Internet-Drafts, please
  29.              check the "1id-abstracts.txt" listing contained in the
  30.              Internet-Drafts Shadow Directories on ftp.is.co.za (Africa),
  31.              ftp.nordu.net (Northern Europe), ftp.nis.garr.it (Southern
  32.              Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East
  33.              Coast), or ftp.isi.edu (US West Coast).
  34.  
  35.           2.   Abstract
  36.  
  37.              This document describes IRCX, a set of extensions to the
  38.              Internet Relay Chat (IRC) protocol defined in RFC 1459[1].
  39.              Only client-server interactions  are defined. The added
  40.              functionality includes user authentication for multiple
  41.              security providers, support  for  UNICODE[2]  characters,
  42.              multilayer  security,  and  a unified property mechanism.
  43.              Chat server implementations can support channel or server
  44.              services with full  control over all messages and events.
  45.              These services communicate with the core server over an
  46.              extended IRC connection.
  47.  
  48.              All changes to the IRC protocol are designed such  that
  49.              existing clients  will continue to work against servers
  50.              implementing the extensions. Support for the extended protocol
  51.              can be queried by clients to take advantage of the added
  52.              functionality or to conform to the basic protocol as defined
  53.              in RFC1459.
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                    [Page 1]
  64.  
  65.  
  66.  
  67.  
  68.              INTERNET-DRAFT                IRCX                   June 1998
  69.  
  70.  
  71.           2.1. Contents
  72.  
  73.              1.  Status of this Memo.......................................1
  74.              2.  Abstract..................................................1
  75.                 2.1.  Contents.............................................2
  76.              3.  Modified UTF8 Encoding of UNICODE characters..............5
  77.              4.  Terms and Definitions.....................................5
  78.                 4.1.  User Access Levels...................................6
  79.                 4.2.  Prefixes.............................................6
  80.              5.  IRCX Client Messages......................................7
  81.                 5.1.  ACCESS command (new IRCX command)....................8
  82.                    5.1.1. Parameters.......................................8
  83.                    5.1.2. Results..........................................8
  84.                    5.1.3. Possible Errors..................................9
  85.                    5.1.4. Remarks..........................................9
  86.                    5.1.5. Examples.........................................9
  87.                 5.2.  AUTH Command (new IRCX command).....................10
  88.                    5.2.1. Parameters......................................10
  89.                    5.2.2. Results.........................................10
  90.                    5.2.3. Possible Errors.................................10
  91.                    5.2.4. Remarks:........................................11
  92.                    5.2.5. Example:........................................11
  93.                 5.3.  CREATE (new IRCX command)...........................11
  94.                    5.3.1. Parameters......................................11
  95.                    5.3.2. Results.........................................11
  96.                    5.3.3. Possible Errors.................................11
  97.                    5.3.4. Remarks.........................................12
  98.                    5.3.5. Examples........................................12
  99.                 5.4.  DATA / REQUEST / REPLY (new IRCX command)...........12
  100.                    5.4.1. Parameters......................................12
  101.                    5.4.2. Results.........................................13
  102.                    5.4.3. Possible Errors.................................13
  103.                    5.4.4. Remarks.........................................13
  104.                    5.4.5. Example.........................................13
  105.                 5.5.  EVENT (new IRCX command)............................13
  106.                    5.5.1. Parameters......................................13
  107.                    5.5.2. Results.........................................14
  108.                    5.5.3. Possible Errors.................................14
  109.                    5.5.4. Remarks.........................................14
  110.                    5.5.5. Examples:.......................................14
  111.                 5.6.  IRCX (new IRCX command).............................15
  112.                    5.6.1. Parameters......................................15
  113.                    5.6.2. Results.........................................15
  114.                    5.6.3. Example.........................................15
  115.                 5.7.  ISIRCX (new IRCX command)...........................15
  116.                    5.7.1. Results.........................................15
  117.                 5.8.  LISTX (new IRCX command)............................15
  118.                    5.8.1. Parameters......................................16
  119.                    5.8.2. Results.........................................16
  120.                    5.8.3. Remarks.........................................17
  121.                 5.9.  MODE (extension to RFC1459 command).................17
  122.                    5.9.1. Results.........................................17
  123.                    5.9.2. Remarks.........................................17
  124.                 5.10. NOTICE (extension to RFC1459 command)...............18
  125.  
  126.  
  127.                                                                     [Page 2]
  128.  
  129.  
  130.  
  131.  
  132.              INTERNET-DRAFT                IRCX                   June 1998
  133.  
  134.  
  135.                    5.10.1.Results.........................................18
  136.                 5.11. PRIVMSG (extension to RFC1459 command)..............18
  137.                    5.11.1.Results.........................................18
  138.                 5.12. PROP (new IRCX command).............................18
  139.                    5.12.1.Results.........................................18
  140.                    5.12.2.Possible Errors.................................19
  141.                    5.12.3.Remarks.........................................19
  142.                    5.12.4.Examples........................................19
  143.                 5.13. WHISPER (new IRCX command)..........................19
  144.                    5.13.1.Results.........................................19
  145.                    5.13.2.Possible Errors.................................19
  146.                    5.13.3.Remarks.........................................20
  147.              6.  IRCX Server Messages.....................................20
  148.                 6.1.  AUTH (new IRCX message).............................20
  149.                    6.1.1. Parameters......................................20
  150.                    6.1.2. Remarks.........................................21
  151.                 6.2.  CLONE (new IRCX message)............................21
  152.                    6.2.1. Parameters......................................21
  153.                    6.2.2. Remarks.........................................21
  154.                    6.2.3. Example.........................................21
  155.                 6.3.  CREATE (new IRCX message)...........................21
  156.                    6.3.1. Parameters......................................21
  157.                    6.3.2. Remarks.........................................22
  158.                    6.3.3. Example.........................................22
  159.                 6.4.  DATA / REQUEST / REPLY (new IRCX messages)..........22
  160.                    6.4.1. Parameters......................................22
  161.                    6.4.2. Remarks.........................................22
  162.                 6.5.  EVENT (new IRCX message)............................23
  163.                    6.5.1. Parameters......................................23
  164.                    6.5.2. Example.........................................23
  165.                 6.6.  KNOCK (new IRCX message)............................23
  166.                    6.6.1. Parameters......................................24
  167.                    6.6.2. Remarks.........................................24
  168.                 6.7.  REDIRECT (new IRCX message).........................24
  169.                    6.7.1. Parameters......................................24
  170.                    6.7.2. Remarks.........................................24
  171.                    6.7.3. Example.........................................24
  172.                 6.8.  WHISPER (new IRCX message)..........................24
  173.                    6.8.1. Parameters......................................24
  174.                    6.8.2. Remarks.........................................25
  175.                    6.8.3. Example.........................................25
  176.              7.  User Modes and Properties................................25
  177.                 7.1.  OWNER (IRCX +q).....................................25
  178.                 7.2.  GAG (IRCX +z).......................................25
  179.              8.  Channel Modes and Properties.............................26
  180.                 8.1.  Modes...............................................26
  181.                    8.1.1. PUBLIC (RFC1459 default)........................26
  182.                    8.1.2. PRIVATE (RFC1459 +p)............................26
  183.                    8.1.3. HIDDEN (IRCX +h)................................26
  184.                    8.1.4. SECRET (RFC1459 +s).............................26
  185.                    8.1.5. MODERATED (RFC1459 +m)..........................27
  186.                    8.1.6. NOEXTERN (RFC1459 +n)...........................27
  187.                    8.1.7. TOPICOP (RFC1459 +t)............................27
  188.                    8.1.8. INVITE (RFC1459 +i).............................27
  189.  
  190.  
  191.                                                                     [Page 3]
  192.  
  193.  
  194.  
  195.  
  196.              INTERNET-DRAFT                IRCX                   June 1998
  197.  
  198.  
  199.                    8.1.9. KNOCK (IRCX +u).................................27
  200.                    8.1.10.NOFORMAT (IRCX +f)..............................27
  201.                    8.1.11.NOWHISPER (IRCX +w).............................28
  202.                    8.1.12.AUDITORIUM (IRCX +x)............................28
  203.                    8.1.13.REGISTERED (IRCX +r)............................28
  204.                    8.1.14.SERVICE (IRCX +z)...............................28
  205.                    8.1.15.AUTHONLY (IRCX +a)..............................29
  206.                    8.1.16.CLONEABLE (IRCX +d).............................29
  207.                    8.1.17.CLONE (IRCX +e).................................29
  208.                 8.2.  Properties..........................................30
  209.                    8.2.1. OID (R/O).......................................30
  210.                    8.2.2. NAME (R/O)......................................30
  211.                    8.2.3. CREATION (R/O)..................................30
  212.                    8.2.4. LANGUAGE........................................30
  213.                    8.2.5. OWNERKEY........................................30
  214.                    8.2.6. HOSTKEY.........................................31
  215.                    8.2.7. MEMBERKEY.......................................31
  216.                    8.2.8. PICS............................................31
  217.                    8.2.9. TOPIC...........................................31
  218.                    8.2.10.SUBJECT.........................................31
  219.                    8.2.11.CLIENT..........................................31
  220.                    8.2.12.ONJOIN..........................................32
  221.                    8.2.13.ONPART..........................................32
  222.                    8.2.14.LAG.............................................32
  223.                    8.2.15.ACCOUNT.........................................32
  224.                    8.2.16.CLIENTGUID......................................32
  225.                    8.2.17.SERVICEPATH.....................................33
  226.              9.  IRCX Command Responses...................................33
  227.                 9.1.  Command Replies.....................................33
  228.                 9.2.  IRCX Error Replies..................................36
  229.              10. Security Considerations..................................39
  230.              11. Acknowledgements.........................................40
  231.              12. References...............................................40
  232.              13. Authors' Addresses.......................................40
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.                                                                     [Page 4]
  256.  
  257.  
  258.  
  259.  
  260.              INTERNET-DRAFT                IRCX                   June 1998
  261.  
  262.  
  263.           3.   Modified UTF8 Encoding of UNICODE characters
  264.  
  265.              Allowing UNICODE characters for all user visible strings
  266.              introduces a set of compatibility problems if the protocol
  267.              must be backward compatible. UTF8 encoding is used to convert
  268.              wide UNICODE characters into a string compatible with existing
  269.              IRC servers and clients.
  270.  
  271.              To  permit  the full range of UNICODE characters, we must
  272.              introduce an additional post-processing step on the result of
  273.              an UTF8 translation.
  274.  
  275.              Any string beginning with a '%' character (i.e. "reason"
  276.              strings within a REDIRECT command) will be interpreted as
  277.              UTF8-encoded UNICODE strings.
  278.  
  279.              UNICODE characters encoded in UTF8 may use more bytes than an
  280.              ASCII character.  To ensure compatibility, UNICODE strings
  281.              such as nicknames and channel names must fit within the
  282.              standard length measured in bytes, not in characters.
  283.  
  284.              The quoting character for the post-processing step is the '\'
  285.              character. All mappings are listed in the table below.
  286.  
  287.              Table 1 - Character Quoting in UTF8
  288.  
  289.               \b            " " (blank)
  290.  
  291.               \c            ","
  292.  
  293.               \\            "\"
  294.  
  295.               \r            CR
  296.  
  297.               \n            LF
  298.  
  299.               \t            TAB
  300.  
  301.              IRCX clients view UTF8-encoded UNICODE strings in their native
  302.              form.  So non-IRCX clients can inter-operate with UNICODE
  303.              nicks, UNICODE nicks are translated by the server into a
  304.              usable form before being sent to the non-IRCX client.  This
  305.              usable format is a simple hex format preceded by a '^'
  306.              character.  Non-IRCX clients can use this hex format nickname
  307.              to specify the IRCX/UNICODE user.
  308.  
  309.           4.   Terms and Definitions
  310.  
  311.              Throughout this document we will use certain terms which are
  312.              defined in the following pages.
  313.  
  314.              String lengths are indicated in "characters", referring to
  315.              ASCII characters, because even UNICODE strings must be encoded
  316.              in ASCII for the IRC protocol.
  317.  
  318.  
  319.                                                                     [Page 5]
  320.  
  321.  
  322.  
  323.  
  324.              INTERNET-DRAFT                IRCX                   June 1998
  325.  
  326.  
  327.              Table 2 - Definition of Terms
  328.  
  329.               Chat Network   A Chat Network is comprised  of  one  or  more
  330.                               servers linked together.
  331.  
  332.               Server         A server is a single machine.
  333.  
  334.               Channel        A  channel (sometimes called a room or
  335.                               conference) is a conversation between one or
  336.                               more users.
  337.  
  338.               Member         A member is a user that is part of a
  339.                               conversation in a channel.
  340.  
  341.               User           A user is a client that makes a connection to
  342.                               the server.
  343.  
  344.               Objects        An object is a general term for channels,
  345.                               users,  members (users in a channel), and
  346.                               servers.  The type of object can be determined
  347.                               from the first character of the object's name.
  348.  
  349.           4.1. User Access Levels
  350.  
  351.              There are six user levels that define the ability of the user
  352.              to perform operations.  Some levels are determined on the
  353.              context  of the operation to be performed.
  354.  
  355.              Table 3 - Definition of Client Levels
  356.  
  357.               Sysop Manager  A Sysop Manager has full access to online
  358.                               commands.
  359.  
  360.               Sysop          A Chat Sysop oversees and controls the chat
  361.                               network.
  362.  
  363.               Channel Owner  A Channel Owner manages a channel and the
  364.                               channel hosts.
  365.  
  366.               Channel Host   A Channel Host manages a channel.   Also
  367.                               referred to as a channel operator.
  368.  
  369.               Channel Member A Channel Member is a member of a channel.
  370.  
  371.               Chat User      A Chat User is a client connected to the
  372.                               server.
  373.  
  374.           4.2. Prefixes
  375.  
  376.              Each object contains a unique prefix that identifies the type
  377.              of object.  By tagging UNICODE objects with a special prefix,
  378.              a client can easily decide whether to use standard ASCII or
  379.              UNICODE when sending a message to a user or channel.  The IRCX
  380.              client is responsible, when sending a UNICODE string, for
  381.  
  382.  
  383.                                                                     [Page 6]
  384.  
  385.  
  386.  
  387.  
  388.              INTERNET-DRAFT                IRCX                   June 1998
  389.  
  390.  
  391.              prefixing it with a '%' character so that other IRCX clients
  392.              can interpret it as UNICODE.
  393.  
  394.              Table 4 - Object identifiers
  395.  
  396.               #       The '#' prefix identifies a RFC1459 global channel.
  397.  
  398.               &       The '&' prefix identifies a RFC1459 local channel.
  399.  
  400.               %#      The "%#" prefix identifies an extended global channel
  401.                       name (a modified UTF8-encoded UNICODE string).
  402.  
  403.               %&      The "%&" prefix identifies an extended local channel
  404.                       name (a modified UTF8-encoded UNICODE string).
  405.  
  406.               %       The '%' character followed by a space or comma can
  407.                       identify  the  last channel that this client
  408.                       specified and is a member of.  Its function is to
  409.                       optimize  server processing of multiple messages from
  410.                       a client to a channel.
  411.  
  412.               A to }  The 'A' through '}' prefix identifies a standard
  413.                       RFC1459 nickname.
  414.  
  415.               '       The ''' prefix identifies an extended IRCX nickname
  416.                       which  consists of a modified UTF8-encoded UNICODE
  417.                       string.  The ''' character followed by a space or
  418.                       comma is used to represent the local client
  419.                       connection. The characters following ''' can be '0'
  420.                       through '9', '-', and any character above 'A'.
  421.  
  422.               ^       The '^' prefix identifies a nickname which was
  423.                       translated from  UTF8 into hex characters so that the
  424.                       nickname can be viewed by  non-IRCX clients.  The
  425.                       characters following '^' can be any standard RFC1459
  426.                       nickname characters.
  427.  
  428.               0       The '0' prefix identifies an internal object
  429.                       identifier  (OID).   The OID consists of the '0'
  430.                       prefix and eight hexadecimal characters. If not
  431.                       supported by the server, then OID must be returned as
  432.                       '0'.
  433.  
  434.               $       The  '$' prefix identifies a server on the network.
  435.                       The '$' character followed by a space or comma  may
  436.                       be used to represent the local server the client is
  437.                       connected to.
  438.  
  439.           5.   IRCX Client Messages
  440.  
  441.              This section details commands which have been added and
  442.              commands which have been changed from RFC1459.  Responses from
  443.              the server are discussed in greater detail in later sections.
  444.  
  445.  
  446.  
  447.                                                                     [Page 7]
  448.  
  449.  
  450.  
  451.  
  452.              INTERNET-DRAFT                IRCX                   June 1998
  453.  
  454.  
  455.           5.1. ACCESS command (new IRCX command)
  456.  
  457.              Create an "access entry" for an object to grant or deny access
  458.              to an object, including a channel, a user, or the server.
  459.              ACCESS LIST is used to list all access entries for an object
  460.              and CLEAR is used to clear all entries or all entries of the
  461.              same level.
  462.  
  463.              Syntax 1: ACCESS <object> LIST
  464.  
  465.              Syntax 2:  ACCESS <object> ADD|DELETE <level> <mask>
  466.              [<timeout> [:<reason>]]
  467.  
  468.              Syntax 3: ACCESS <object> CLEAR [<level>]
  469.  
  470.           5.1.1.    Parameters
  471.  
  472.              <object>  The object to which access is being granted or
  473.              limited.  Can be a channel name, nickname, $ or *.
  474.  
  475.              <level>  The level of access being given or taken away.  Can
  476.              be:
  477.  
  478.                DENY      Disallow access to an object that is accessible
  479.  
  480.                GRANT     Allow access to an object that is  inaccessible
  481.  
  482.                HOST      Channel host access to specified channel
  483.  
  484.                OWNER     Channel owner access to specified channel
  485.  
  486.                VOICE     Voice access to specified channel
  487.  
  488.              <mask>  Mask to identify user by nickname, userid, host or
  489.              server characteristics.  Supports wildcards * and ?.
  490.  
  491.              <timeout>  Minutes until the access entry is removed.  A value
  492.              of 0 indicates unlimited duration.
  493.  
  494.              <reason>  Text reason shown when users are denied access due
  495.              to  the access entry.
  496.  
  497.           5.1.2.    Results
  498.  
  499.              IRCRPL_ACCESSADD
  500.  
  501.              IRCRPL_ACCESSDELETE
  502.  
  503.              IRCRPL_ACCESSSTART
  504.  
  505.              IRCRPL_ACCESSLIST
  506.  
  507.              IRCRPL_ACCESSEND
  508.  
  509.  
  510.  
  511.                                                                     [Page 8]
  512.  
  513.  
  514.  
  515.  
  516.              INTERNET-DRAFT                IRCX                   June 1998
  517.  
  518.  
  519.           5.1.3.    Possible Errors
  520.  
  521.              In this specification possible error messages are listed.
  522.  
  523.              IRCERR_BADLEVEL
  524.  
  525.              IRCERR_DUPACCESS
  526.  
  527.              IRCERR_MISACCESS
  528.  
  529.              IRCERR_TOOMANYACCESSES
  530.  
  531.              IRCERR_TOOMANYARGUMENTS
  532.  
  533.              IRCERR_BADCOMMAND
  534.  
  535.              IRCERR_NOTSUPPORTED
  536.  
  537.              IRCERR_NOACCESS
  538.  
  539.           5.1.4.    Remarks
  540.  
  541.              An object with GRANT access entries but no DENY entries is
  542.              assumed to be off-limits to those users not covered by the
  543.              GRANT entries.  If there are multiple entries in the access
  544.              list, the list  is  processed in the following order:  OWNER,
  545.              HOST, VOICE, GRANT, DENY.
  546.  
  547.              Hosts  and Owners may add and delete access entries for their
  548.              channel.  Hosts may not remove access entries added by owners.
  549.              Any user may add and delete access entries for themselves.
  550.              Sysops and sysop managers on a server may add and delete
  551.              access entries for that server or the entire network.
  552.  
  553.              A user who has blocked another user does not get any messages
  554.              from the blocked user, including invites.
  555.  
  556.           5.1.5.    Examples
  557.  
  558.              To make a user, "piper", a channel host when they join the
  559.              channel, "#mychan":
  560.  
  561.              ACCESS #mychan ADD HOST piper
  562.  
  563.              To grant normal access to the network to a few people but deny
  564.              access to all others:
  565.  
  566.              ACCESS * ADD DENY * :closed for private party
  567.  
  568.              ACCESS * ADD GRANT *.company.com :these people can get on
  569.  
  570.              To delete the DENY access record on the network that denies
  571.              access to '*' (note that this doesn't delete other DENY access
  572.              records such as '*.com'):
  573.  
  574.  
  575.                                                                     [Page 9]
  576.  
  577.  
  578.  
  579.  
  580.              INTERNET-DRAFT                IRCX                   June 1998
  581.  
  582.  
  583.              ACCESS * DELETE DENY *
  584.  
  585.              To clear all DENY-level entries on the local server:
  586.  
  587.              ACCESS $ CLEAR DENY
  588.  
  589.              To clear all access entries of any level for a channel:
  590.  
  591.              ACCESS #mychan CLEAR
  592.  
  593.           5.2. AUTH Command (new IRCX command)
  594.  
  595.              Authenticate the client using an SASL[4] authentication
  596.              mechanism.
  597.  
  598.              Syntax 1: AUTH <name> <seq> [:<parameter>]
  599.  
  600.           5.2.1.    Parameters
  601.  
  602.              <name>  The name of the SASL mechanism to use for
  603.              authentication.
  604.  
  605.              <seq>   The sequence is a value of 'I' or 'S'. The 'I' value
  606.              is specified for the initial AUTH message and the 'S' value is
  607.              specified  for all  subsequent  AUTH  messages.   If the
  608.              client specifies '*' for the sequence, the server will abort
  609.              the authentication sequence and return
  610.              IRCERR_AUTHENTICATIONFAILED.
  611.  
  612.              <parameter>   This is optional data sent as an argument with
  613.              the AUTH messages.  The content depends on the authentication
  614.              mechanism being used.  All content must use standard escaping
  615.              formats (e.g. \r for carriage return) to comply with IRC
  616.              message format restrictions.
  617.  
  618.           5.2.2.    Results
  619.  
  620.              AUTH message
  621.  
  622.           5.2.3.    Possible Errors
  623.  
  624.              ERR_NEEDMOREPARAMS
  625.  
  626.              IRCERR_ALREADYAUTHENTICATED
  627.  
  628.              IRCERR_ALREADYREGISTERED
  629.  
  630.              IRCERR_AUTHENTICATIONFAILED
  631.  
  632.              IRCERR_AUTHENTICATIONSUSPENDED
  633.  
  634.              IRCERR_BADCOMMAND
  635.  
  636.              IRCERR_UNKNOWNPACKAGE
  637.  
  638.  
  639.                                                                    [Page 10]
  640.  
  641.  
  642.  
  643.  
  644.              INTERNET-DRAFT                IRCX                   June 1998
  645.  
  646.  
  647.           5.2.4.    Remarks
  648.  
  649.              If the server is known to support IRCX with specific SASL
  650.              mechanism(s), then the first message from an IRCX-compliant
  651.              client must be the AUTH command (if authentication is to be
  652.              used), before the USER and NICK  commands.  Use MODE ISIRCX to
  653.              determine if the server supports IRCX.
  654.  
  655.           5.2.5.    Example
  656.  
  657.              Client: AUTH NTLM I :<data>
  658.  
  659.              Server: AUTH NTLM S :<data>
  660.  
  661.              Client: AUTH NTLM S :<data>
  662.  
  663.              Server: AUTH NTLM * userid@domain 03FA4534C
  664.  
  665.           5.3. CREATE (new IRCX command)
  666.  
  667.              Create a new channel and/or join an existing channel.
  668.  
  669.              Syntax: CREATE <channel> [<modes> [<modeargs>]]
  670.  
  671.           5.3.1.    Parameters
  672.  
  673.              <channel>  The name of the channel.
  674.  
  675.              <modes>  Initial channel modes, not separated by spaces (like
  676.                   MODE command).  Includes mode 'e' to force a clone of a
  677.                   clonable channel.
  678.  
  679.              <modeargs>  Optional mode arguments, separated by spaces, in
  680.                   the  same order as the modes.  For the mode 'l' the mode
  681.                   argument is the maximum number of members in the channel.
  682.                   For the mode 'k' the mode argument is  the  channel
  683.                   keyword.  These are the only modes that require mode
  684.                   arguments.
  685.  
  686.           5.3.2.    Results
  687.  
  688.              CREATE message
  689.  
  690.              JOIN message
  691.  
  692.              RPL_TOPIC
  693.  
  694.              RPL_NAMEPLY
  695.  
  696.              RPL_ENDOFNAMES
  697.  
  698.           5.3.3.    Possible Errors
  699.  
  700.              IRCERR_CHANNELEXIST
  701.  
  702.  
  703.                                                                    [Page 11]
  704.  
  705.  
  706.  
  707.  
  708.              INTERNET-DRAFT                IRCX                   June 1998
  709.  
  710.  
  711.              IRCERR_ALREADYONCHANNEL
  712.  
  713.              ERR_NEEDMOREPARAMS
  714.  
  715.              ERR_INVITEONLYCHAN
  716.  
  717.              ERR_CHANNELISFULL
  718.  
  719.              ERR_BANNEDFROMCHAN
  720.  
  721.              ERR_BADCHANNELKEY
  722.  
  723.              ERR_TOOMANYCHANNELS
  724.  
  725.              ERR_UNKNOWNCOMMAND
  726.  
  727.           5.3.4.    Remarks
  728.  
  729.              The CREATE command provides a method to specify channel
  730.              properties at creation time, and also provides a method (flag
  731.              'c') to create and join a channel only if it does not already
  732.              exist.  If user is  not  in IRCX mode, server returns
  733.              ERR_UNKNOWNCOMMAND.
  734.  
  735.           5.3.5.    Examples
  736.  
  737.              This example shows the creation of a moderated (m) channel
  738.              with the following properties and modes:  its topic can only
  739.              be changed by an owner or host (t = TOPICOP), messages from
  740.              outside the channel are blocked (n = NOEXTERN), it is limited
  741.              to 50 members (l 50), it has a member key which is 'password'
  742.              (k password), and it will be created only if it doesn't
  743.              already exist (c = CREATE)
  744.  
  745.              Client: CREATE #MyChannel tnmlkc 50 password
  746.  
  747.              Server: CREATE #MyChannel 048532944
  748.  
  749.           5.4. DATA / REQUEST / REPLY (new IRCX command)
  750.  
  751.              Used to send tagged data, requests or replies.  The syntax for
  752.              each is the same, but clients can use REQUEST to indicate that
  753.              a REPLY is desired, and use REPLY to indicate that a REQUEST
  754.              was issued.  If user is not in IRCX mode, server returns
  755.              ERR_UNKNOWNCOMMAND.
  756.  
  757.              Syntax 1: DATA <target> <tag> :<message>
  758.  
  759.           5.4.1.    Parameters
  760.  
  761.              <target>  The target for the data. Target can be a nick, list
  762.                   of nicks, channel, list of channels, or channel followed
  763.                   by a list  of some members of the channel.  This
  764.  
  765.  
  766.  
  767.                                                                    [Page 12]
  768.  
  769.  
  770.  
  771.  
  772.              INTERNET-DRAFT                IRCX                   June 1998
  773.  
  774.  
  775.                   definition for <target> will be used throughout this
  776.                   document.
  777.  
  778.              <tag>  Text field that clients use to know how to interpret
  779.                   the  data.  Valid characters are [A..z], [0..9] and
  780.                   period (.).  The first character must be one of [A..z].
  781.                   Maximum 15 characters.  If the tag  begins with ADM, SYS,
  782.                   OWN or HST then the originator must have appropriate
  783.                   privileges (Sysop Manager, Sysop, Channel Owner or
  784.                   Channel Host.  Channel Owner & Host apply to the channel
  785.                   the message is being sent to.)  The server itself can
  786.                   send tags beginning with these reserved strings.
  787.  
  788.              <message>  Payload or data for the message, ending with a
  789.                   newline. Any newlines or other control characters within
  790.                   the body of the message must be escaped.
  791.  
  792.           5.4.2.    Results
  793.  
  794.              DATA message
  795.  
  796.           5.4.3.    Possible Errors
  797.  
  798.              ERR_UNKNOWNCOMMAND
  799.  
  800.           5.4.4.    Remarks
  801.  
  802.              REPLY and REQUEST may be used to replace "DATA".  IRCX servers
  803.              should not send DATA commands to clients that have not
  804.              indicated that they support IRCX. Clients should only process
  805.              DATA messages if they know and support the tag used.
  806.  
  807.              Prefixes should indicate the organization that specified them,
  808.              when appropriate.  For example:  MYORG.AVATAR could be a tag
  809.              used by MyOrg, as would be all MYORG.* tags.
  810.  
  811.           5.4.5.    Example
  812.  
  813.              Sending ad banners from server sysop to channel, "#Channel":
  814.  
  815.              DATA #Channel SYS.AD.SMALL :<url-stuff>
  816.  
  817.           5.5. EVENT (new IRCX command)
  818.  
  819.              Add/Change/Delete event logging to the client connection.  The
  820.              list of event types and the way masks are applied is not
  821.              specified here.
  822.  
  823.              Syntax 1: EVENT [ADD | DELETE] <event> [<mask>]
  824.  
  825.              Syntax 2: EVENT LIST [<event>]
  826.  
  827.           5.5.1.    Parameters
  828.  
  829.  
  830.  
  831.                                                                    [Page 13]
  832.  
  833.  
  834.  
  835.  
  836.              INTERNET-DRAFT                IRCX                   June 1998
  837.  
  838.  
  839.              <event>  Type of event, such as CHANNEL, MEMBER, SERVER,
  840.                   CONNECTION, SOCKET or USER.
  841.  
  842.              <mask> Optional mask for applying a selection criteria per
  843.                   event.
  844.  
  845.           5.5.2.    Results
  846.  
  847.              IRCRPL_EVENTADD
  848.  
  849.              IRCRPL_EVENTDEL
  850.  
  851.              IRCRPL_EVENTSTART
  852.  
  853.              IRCRPL_EVENTLIST
  854.  
  855.              IRCRPL_EVENTEND
  856.  
  857.           5.5.3.    Possible Errors
  858.  
  859.              ERR_NEEDMOREPARAMS
  860.  
  861.              ERR_NOPRIVILEGES
  862.  
  863.              IRCERR_BADFUNCTION
  864.  
  865.              IRCERR_EVENTDUP
  866.  
  867.              IRCERR_EVENTMIS
  868.  
  869.              IRCERR_NOSUCHEVENT
  870.  
  871.              IRCERR_TOOMANYEVENTS
  872.  
  873.           5.5.4.    Remarks
  874.  
  875.              The EVENT command can be used by other server implementations
  876.              to define the events that a sysop manager or sysop of the
  877.              server wishes to be notified of.  Only sysop managers and/or
  878.              sysops are allowed to receive event messages.
  879.  
  880.           5.5.5.    Examples
  881.  
  882.              Add channel events.
  883.  
  884.                Client: EVENT ADD CHANNEL
  885.  
  886.                Server: :<host> 806 <nick> CHANNEL *!*@*$*
  887.  
  888.              Add a list event with no active events returned.
  889.  
  890.                Client: EVENT LIST
  891.  
  892.                Server: :<host> 808 <nick> :Start of events
  893.  
  894.  
  895.                                                                    [Page 14]
  896.  
  897.  
  898.  
  899.  
  900.              INTERNET-DRAFT                IRCX                   June 1998
  901.  
  902.  
  903.                        :<host> 809 <nick> CHANNEL *!*@*$*
  904.  
  905.                        :<host> 810 <nick> :End of events
  906.  
  907.           5.6. IRCX (new IRCX command)
  908.  
  909.              Enables IRCX mode and displays IRCX status.  Use MODE ISIRCX
  910.              first to see if the server supports IRCX.
  911.  
  912.              Syntax: IRCX
  913.  
  914.           5.6.1.    Parameters
  915.  
  916.              None.
  917.  
  918.           5.6.2.    Results
  919.  
  920.              IRCRPL_IRCX
  921.  
  922.           5.6.3.    Example
  923.  
  924.              This example includes a server that supports IRCX and three
  925.              authentication packages.
  926.  
  927.                Client: IRCX
  928.  
  929.                Server: :<host> 800 <nick> 1 0 NTLM,DPA,ANON 512 *
  930.  
  931.           5.7. ISIRCX (new IRCX command)
  932.  
  933.              Queries whether or not the server supports the Extended
  934.              RFC1459 protocol (IRCX).  Server response is same as for IRCX
  935.              message.
  936.  
  937.              Use ISIRCX after logging into the server.
  938.  
  939.              Syntax: ISIRCX
  940.  
  941.           5.7.1.    Results
  942.  
  943.              IRCRPL_IRCX
  944.  
  945.           5.8. LISTX (new IRCX command)
  946.  
  947.              Extended version of the LIST command that returns  additional
  948.              channel properties.   Channels  with  extended names will be
  949.              returned, even to non-IRCX clients.  Some channel modes and
  950.              the PICS rating string are included with the result.  Only the
  951.              channel modes that do not define an additional argument
  952.              (TOPICOP, NOEXTERN, etc.) are included in the <modes> field.
  953.              Clients should use the query limit to avoid overloading the
  954.              client or having the connection dropped by the server.
  955.  
  956.              Syntax 1:  LISTX [<channel list>]
  957.  
  958.  
  959.                                                                    [Page 15]
  960.  
  961.  
  962.  
  963.  
  964.              INTERNET-DRAFT                IRCX                   June 1998
  965.  
  966.  
  967.              Syntax 2:  LISTX <query list> [<query limit>]
  968.  
  969.           5.8.1.    Parameters
  970.  
  971.              <channel list>  A list of channels may be specified in order
  972.                   to  find the PICS ratings or modes of those channels.  If
  973.                   no channels are specified, the server will send the
  974.                   entire matching list of channels.
  975.  
  976.              <query list>  One or more query terms separated by spaces or
  977.                   commas.
  978.  
  979.              Table 5 - Query terms for LIST command
  980.  
  981.               <#             Select channels with less than # members.
  982.  
  983.               >#             Select channels with more than # members.
  984.  
  985.               C<#            Select channels created less than # minutes
  986.                               ago.
  987.  
  988.               C>#            Select channels created greater than # minutes
  989.                               ago.
  990.  
  991.               L=<mask>       Select channels with language property
  992.                               matching the mask string.
  993.  
  994.               N=<mask>       Select channels with name matching the mask
  995.                               string.
  996.  
  997.               R=0            Select unregistered channels.
  998.  
  999.               R=1            Select registered channels.
  1000.  
  1001.               S=<mask>       Select channels with subject matching the mask
  1002.                               string.
  1003.  
  1004.               T<#            Select channels with a topic changed less than
  1005.                               # minutes ago.
  1006.  
  1007.               T>#            Select  channels with a topic changed greater
  1008.                               than # minutes ago.
  1009.  
  1010.               T=<mask>       Select channels that topic matches the mask
  1011.                               string.
  1012.  
  1013.               <query limit>  Maximum number of channels to be returned.
  1014.  
  1015.               <mask>         Sequence of characters that is used to select
  1016.                               a matching  channel  name  or  topic.   The
  1017.                               character * and ? are used for wildcard
  1018.                               searches.
  1019.  
  1020.           5.8.2.    Results
  1021.  
  1022.  
  1023.                                                                    [Page 16]
  1024.  
  1025.  
  1026.  
  1027.  
  1028.              INTERNET-DRAFT                IRCX                   June 1998
  1029.  
  1030.  
  1031.              IRCRPL_LISTXSTART
  1032.  
  1033.              IRCRPL_LISTXLIST
  1034.  
  1035.              IRCRPL_LISTXPICS
  1036.  
  1037.              IRCRPL_LISTXTRUNC
  1038.  
  1039.              IRCRPL_LISTXEND
  1040.  
  1041.           5.8.3.    Remarks
  1042.  
  1043.              To compose a mask, use this character escaping scheme.
  1044.  
  1045.              Table 6 - Character escaping in mask-string
  1046.  
  1047.              \b      for " " blank
  1048.  
  1049.              \c      for ","
  1050.  
  1051.              \\      for "\"
  1052.  
  1053.              \*      for *
  1054.  
  1055.              \?      for ?
  1056.  
  1057.              The PICS property is only returned if not null.
  1058.  
  1059.              A record limit of '0' (zero) or blank will be interpreted as
  1060.              unlimited.
  1061.  
  1062.           5.9. MODE (extension to RFC1459 command)
  1063.  
  1064.              MODE command can now be used for new user or channel modes
  1065.              (see later sections).  In addition, the special syntax "MODE
  1066.              ISIRCX" can be used to help clients find out whether a server
  1067.              supports IRCX prior to logging into the server.
  1068.  
  1069.              Syntax: MODE ISIRCX
  1070.  
  1071.           5.9.1.    Results
  1072.  
  1073.              MODE message
  1074.  
  1075.              IRCRPL_IRCX
  1076.  
  1077.           5.9.2.    Remarks
  1078.  
  1079.              The ISIRCX mode (must be in capital letters) is only
  1080.              functional before the user has registered with the server.
  1081.              IRCX servers respond with IRCRPL_IRCX  and  non-IRCX  servers
  1082.              should return an error code.  This allows unregistered users
  1083.              to query whether the server supports IRCX.
  1084.  
  1085.  
  1086.  
  1087.                                                                    [Page 17]
  1088.  
  1089.  
  1090.  
  1091.  
  1092.              INTERNET-DRAFT                IRCX                   June 1998
  1093.  
  1094.  
  1095.              See RFC1459 for more details on the original MODE command and
  1096.              its parameters.
  1097.  
  1098.           5.10.     NOTICE (extension to RFC1459 command)
  1099.  
  1100.              Sends a notice to a channel or user.  In RFC1459 a notice
  1101.              could only be sent to a channel or a list of users.  Now a
  1102.              notice can be sent to a list of users within the context of a
  1103.              channel.  As before, users will not get the list of users that
  1104.              received the notice.
  1105.  
  1106.              Syntax: NOTICE <target> :<message>
  1107.  
  1108.           5.10.1.   Results
  1109.  
  1110.              Same as defined in RFC1459, but with the additional
  1111.              functionality  of sending to a list of nicknames within the
  1112.              context of a channel.
  1113.  
  1114.           5.11.     PRIVMSG (extension to RFC1459 command)
  1115.  
  1116.              Sends a message to a channel or user.  PRIVMSG is extended in
  1117.              the same way as NOTICE.
  1118.  
  1119.              Syntax: PRIVMSG <target> :<message>
  1120.  
  1121.           5.11.1.   Results
  1122.  
  1123.              Same as defined in RFC1459, but with the additional
  1124.              functionality of sending to a list of nicknames within the
  1125.              context of a channel.
  1126.  
  1127.           5.12.     PROP (new IRCX command)
  1128.  
  1129.              Add, change or delete a channel data property.
  1130.  
  1131.              To query a property:
  1132.  
  1133.              Syntax 1: PROP <channel> <property>[,<property>]
  1134.  
  1135.              To set or change a property:
  1136.  
  1137.              Syntax 2: PROP <channel> <property> :<data>
  1138.  
  1139.              To delete a property:
  1140.  
  1141.              Syntax 3: PROP <channel> <property> :
  1142.  
  1143.           5.12.1.   Results
  1144.  
  1145.              PROP message
  1146.  
  1147.              IRCRPL_PROPLIST
  1148.  
  1149.  
  1150.  
  1151.                                                                    [Page 18]
  1152.  
  1153.  
  1154.  
  1155.  
  1156.              INTERNET-DRAFT                IRCX                   June 1998
  1157.  
  1158.  
  1159.              IRCRPL_PROPEND
  1160.  
  1161.           5.12.2.   Possible Errors
  1162.  
  1163.              IRCERR_BADCOMMAND
  1164.  
  1165.              IRCERR_BADPROPERTY
  1166.  
  1167.              IRCERR_SECURITY
  1168.  
  1169.              IRCERR_NOSUCHOBJECT
  1170.  
  1171.              IRCERR_TOOMANYARGUMENTS
  1172.  
  1173.              IRCERR_BADVALUE
  1174.  
  1175.           5.12.3.   Remarks
  1176.  
  1177.              The PROP command provides a new method for manipulating string
  1178.              and numeric properties of channels.  If an optional channel
  1179.              property is not supported on the server, the server should
  1180.              return IRCERR_BADPROPERTY.
  1181.  
  1182.              See section 8.2 for definitions of channel properties.
  1183.  
  1184.           5.12.4.   Examples
  1185.  
  1186.              Client: PROP #MyChan TOPIC,ONJOIN
  1187.  
  1188.              Server: :<host> 818 <nick> #MyChan TOPIC :This is the topic of
  1189.              my channel
  1190.  
  1191.              Server: :<host> 818 <nick> #MyChan ONJOIN :Welcome to my
  1192.              channel!
  1193.  
  1194.              Server: :<host> 819 <nick> #MyChan :End of properties
  1195.  
  1196.  
  1197.  
  1198.              Client: PROP #MyChannel TOPIC :Change my channel topic
  1199.  
  1200.              Server: PROP #MyChannel TOPIC :Change my channel topic
  1201.  
  1202.           5.13.     WHISPER (new IRCX command)
  1203.  
  1204.              Whisper to member(s) in a channel.
  1205.  
  1206.              Syntax: WHISPER <channel> <nick-list> :<message>
  1207.  
  1208.           5.13.1.   Results
  1209.  
  1210.              WHISPER message
  1211.  
  1212.           5.13.2.   Possible Errors
  1213.  
  1214.  
  1215.                                                                    [Page 19]
  1216.  
  1217.  
  1218.  
  1219.  
  1220.              INTERNET-DRAFT                IRCX                   June 1998
  1221.  
  1222.  
  1223.              ERR_UNKNOWNCOMMAND
  1224.  
  1225.              ERR_CANNOTSENDTOCHAN
  1226.  
  1227.              ERR_USERNOTINCHANNEL
  1228.  
  1229.              ERR_NEEDMOREPARAMS
  1230.  
  1231.              IRCERR_NOTONCHANNEL
  1232.  
  1233.              IRCERR_TOOMANYTARGETS
  1234.  
  1235.              IRCERR_NOSUCHNICK
  1236.  
  1237.              IRCERR_NOSUCHCHANNEL
  1238.  
  1239.              IRCERR_NOWHISPER
  1240.  
  1241.           5.13.3.   Remarks
  1242.  
  1243.              The purpose of the WHISPER command is to whisper to one or
  1244.              more members in a channel within the context of that channel.
  1245.              The sender and all recipients must be in the channel
  1246.              specified.  A whisper is different from a privmsg in that it
  1247.              includes both a user list and a channel name, indicating that
  1248.              the message is private but has a context.
  1249.  
  1250.              IRCX clients should display the WHISPER message within the
  1251.              context (possibly a window) of the specified channel.  Non-
  1252.              IRCX clients receive a PRIVMSG with the content of the whisper
  1253.              (losing the context of the whisper). Only one whisper will be
  1254.              sent per nick.  A user may whisper to themselves.
  1255.  
  1256.              The channel mode 'w' will disable whispers between ordinary
  1257.              members of the channel (but not whispers from or to channel
  1258.              operators).
  1259.  
  1260.           6.   IRCX Server Messages
  1261.  
  1262.              This section summarizes new extended messages which can be
  1263.              sent from the server.
  1264.  
  1265.           6.1. AUTH (new IRCX message)
  1266.  
  1267.              Negotiates authentication with client or informs client that
  1268.              authorization was successful.
  1269.  
  1270.              Syntax 1 (negotiating authorization): AUTH <name> S
  1271.              [:<parameter>]
  1272.  
  1273.              Syntax 2 (authorization successful): AUTH <name> * <ident>
  1274.              <oid>
  1275.  
  1276.           6.1.1.    Parameters
  1277.  
  1278.  
  1279.                                                                    [Page 20]
  1280.  
  1281.  
  1282.  
  1283.  
  1284.              INTERNET-DRAFT                IRCX                   June 1998
  1285.  
  1286.  
  1287.              <name>  The name of the SASL mechanism to use for
  1288.              authentication.
  1289.  
  1290.              <ident>   The ident is the userid@domain of the authenticated
  1291.              client account.  It is returned on the final response from the
  1292.              server (Syntax 2) when authentication is successful.
  1293.  
  1294.              <oid>  The OID is the internal object identifier assigned to
  1295.              the client connection. If not supported by the server, then
  1296.              OID must be returned as '0'.
  1297.  
  1298.              <parameter>  This is optional data sent as an argument with
  1299.              the AUTH messages.
  1300.  
  1301.           6.1.2.    Remarks
  1302.  
  1303.              The server will send the syntax 2 form when the authentication
  1304.              process is complete or a numeric error reply.
  1305.  
  1306.           6.2. CLONE (new IRCX message)
  1307.  
  1308.              Informs the hosts and owners in a CLONEABLE channel that a
  1309.              new CLONE channel was created.
  1310.  
  1311.              Syntax: CLONE <channel-name> <oid>
  1312.  
  1313.           6.2.1.    Parameters
  1314.  
  1315.              <channel-name> The name of the created CLONE channel.
  1316.  
  1317.              <oid>  The object identifier for this new CLONE channel.  The
  1318.              value is implementation-dependent and must equal 0 if not
  1319.              supported.
  1320.  
  1321.           6.2.2.    Remarks
  1322.  
  1323.              The CLONE message can be sent at anytime to the hosts/owners
  1324.              of a CLONEABLE channel to inform them that a new CLONE channel
  1325.              was created. This message is intended to be used by a custom
  1326.              application to automatically  join the new CLONE channel.  A
  1327.              non-IRCX client will not get this message.
  1328.  
  1329.           6.2.3.    Example
  1330.  
  1331.              Server: CLONE #MyChat1 034F8FF32
  1332.  
  1333.           6.3. CREATE (new IRCX message)
  1334.  
  1335.              Informs the client that a new channel was created.   Response
  1336.              to the CREATE command.
  1337.  
  1338.              Syntax: CREATE <channel-name> <oid>
  1339.  
  1340.           6.3.1.    Parameters
  1341.  
  1342.  
  1343.                                                                    [Page 21]
  1344.  
  1345.  
  1346.  
  1347.  
  1348.              INTERNET-DRAFT                IRCX                   June 1998
  1349.  
  1350.  
  1351.              <channel-name> The name of the created channel.
  1352.  
  1353.              <oid> The object identifier for this new channel.  The value
  1354.              is implementation- dependent and must equal 0 if not
  1355.              supported.
  1356.  
  1357.           6.3.2.    Remarks
  1358.  
  1359.              The CREATE message is sent in response to a CREATE command
  1360.              sent by the client application if the channel specified did
  1361.              not previously exist and was created by the server.
  1362.  
  1363.           6.3.3.    Example
  1364.  
  1365.              Server: CREATE #MyChat1 034F8FF32
  1366.  
  1367.           6.4. DATA / REQUEST / REPLY (new IRCX messages)
  1368.  
  1369.              The DATA message (could be REQUEST or REPLY also)  is
  1370.              forwarded from another user or sent by the server.  The
  1371.              payload or message should be interpreted according to the tag.
  1372.              If the tag is unknown, the message may be discarded.
  1373.  
  1374.              Syntax 1: <sender> :DATA <target> <tag> :<message>
  1375.  
  1376.                        <sender> :REQUEST <target> <tag> :<message>
  1377.  
  1378.                        <sender> :REPLY <target> <tag> :<message>
  1379.  
  1380.              If the DATA, REQUEST or REPLY message is sent to a number of
  1381.              members within a channel, the receiving user will see  the
  1382.              channel name and their own nick in the message as follows:
  1383.  
  1384.              Syntax 2:  <sender> :DATA <channel> <nick> <tag> :<message>
  1385.  
  1386.           6.4.1.    Parameters
  1387.  
  1388.              <sender> May be a user or a server.
  1389.  
  1390.              <target> Channel and/or nick list as defined above.
  1391.  
  1392.              <tag> Identifying tag.
  1393.  
  1394.              <message> Payload.
  1395.  
  1396.           6.4.2.    Remarks
  1397.  
  1398.              The tag indicates what to do with the message.  Tag types may
  1399.              be specified by administrators, client developers, server
  1400.              developers etc.
  1401.  
  1402.              A tag beginning with SYS can only be from a sysop, sysop
  1403.              manager or  the server.   A tag beginning with ADM can only be
  1404.              from a sysop manager or the server.
  1405.  
  1406.  
  1407.                                                                    [Page 22]
  1408.  
  1409.  
  1410.  
  1411.  
  1412.              INTERNET-DRAFT                IRCX                   June 1998
  1413.  
  1414.  
  1415.              DATA message functionality is different from client-to-client
  1416.              messaging in several respects.  First, we encourage groups to
  1417.              define their own tags and data formats for special purposes,
  1418.              for example to indicate details for a user's avatar in
  1419.              graphical chats, or to indicate that an ad banner or image
  1420.              should be downloaded.  Second, the DATA  message is more
  1421.              appropriate for content that may go to several users, for
  1422.              example all users in a channel.  Third, the DATA message may
  1423.              come from the server.  Fourth, the SYS and ADM prefixes are
  1424.              specified so that important tags may be reserved for sysops,
  1425.              sysop managers and the server itself, with the server
  1426.              responsible for verifying the sender before forwarding the
  1427.              DATA message.
  1428.  
  1429.           6.5. EVENT (new IRCX message)
  1430.  
  1431.              Notifies the client of an event.  These events are intended
  1432.              for sysops and sysop managers, and are sent in addition to IRC
  1433.              events.
  1434.  
  1435.              Syntax:  EVENT <time-stamp> <object> <event type> <parameters>
  1436.  
  1437.           6.5.1.    Parameters
  1438.  
  1439.              <time-stamp> The number of elapsed seconds from midnight
  1440.              (00:00:00) January  1, 1970 (coordinated universal time) until
  1441.              the time that the event occurred on the server.
  1442.  
  1443.              <object> Objects can be Channel, Member, User, Connection,
  1444.              Socket or Server.
  1445.  
  1446.              <event type> Event type varies depending on the object.  For
  1447.              example, events for channels can be Create, Destroy, Topic
  1448.              change, Mode change, Collision.
  1449.  
  1450.              <parameters> Vary depending on event type.
  1451.  
  1452.           6.5.2.    Example
  1453.  
  1454.              This example is the event generated when a user logs onto
  1455.              server, "chat1" with the nickname, "john", showing the user's
  1456.              info including IP address and port.
  1457.  
  1458.              EVENT chat1 946080000 USER LOGON john!jsmith@uw.edu
  1459.              192.29.93.93:1111
  1460.  
  1461.           6.6. KNOCK (new IRCX message)
  1462.  
  1463.              Informs the owners and hosts of a channel that a user has
  1464.              tried to enter the channel and could not (could be because of
  1465.              a full channel, keyword wrong, user ban, or other reasons).
  1466.              This message is only sent to the IRCX owners and hosts of the
  1467.              channel.
  1468.  
  1469.  
  1470.  
  1471.                                                                    [Page 23]
  1472.  
  1473.  
  1474.  
  1475.  
  1476.              INTERNET-DRAFT                IRCX                   June 1998
  1477.  
  1478.  
  1479.              Syntax: <user> KNOCK <channel> <reason>
  1480.  
  1481.           6.6.1.    Parameters
  1482.  
  1483.              <user> User field is of the format nick!userid@host.
  1484.  
  1485.              <channel> Name of the channel that the user tried to enter.
  1486.  
  1487.              <reason> Reason that the user received when they tried to
  1488.              join the channel.
  1489.  
  1490.           6.6.2.    Remarks
  1491.  
  1492.              A KNOCK message will not be sent to a non-IRCX client.
  1493.  
  1494.           6.7. REDIRECT (new IRCX message)
  1495.  
  1496.              Informs the client that they need to connect to another
  1497.              server.
  1498.  
  1499.              Syntax: REDIRECT <server-list> :<reason>
  1500.  
  1501.           6.7.1.    Parameters
  1502.  
  1503.              <server-list>  The  server list is a comma separated list of
  1504.              host:port pairs.  The server list can be specified either as
  1505.              a  fully-qualified domain name or by the IP address in quad-
  1506.              dotted notation.
  1507.  
  1508.              <reason>  The redirect reason is an implementation-dependent
  1509.              string which can optionally be displayed to the client.
  1510.  
  1511.           6.7.2.    Remarks
  1512.  
  1513.              The REDIRECT message can be sent to the client at any time to
  1514.              request that the client disconnect and reconnect to another
  1515.              server specified in the list.  The REDIRECT message is
  1516.              generally sent when a server is to be shutdown.
  1517.  
  1518.              A REDIRECT message will not be sent to a non-IRCX client.
  1519.  
  1520.           6.7.3.    Example
  1521.  
  1522.              Server: REDIRECT chat.corp.net:6667,134.9.3.3:6667 :Server
  1523.              full.
  1524.  
  1525.           6.8. WHISPER (new IRCX message)
  1526.  
  1527.              A whisper from another channel member.
  1528.  
  1529.              Syntax: <sender> WHISPER <channel> <nick list> :<text>
  1530.  
  1531.           6.8.1.    Parameters
  1532.  
  1533.  
  1534.  
  1535.                                                                    [Page 24]
  1536.  
  1537.  
  1538.  
  1539.  
  1540.              INTERNET-DRAFT                IRCX                   June 1998
  1541.  
  1542.  
  1543.              <sender> The nick-name of the person that sent the whisper.
  1544.  
  1545.              <channel> The channel that the message is sent to.
  1546.  
  1547.              <nick list> The list of nicknames of channel members that will
  1548.              receive the whisper.
  1549.  
  1550.              <text> The content of the whisper.
  1551.  
  1552.           6.8.2.    Remarks
  1553.  
  1554.              The server may transform a WHISPER into a PRIVMSG for clients
  1555.              that do not support IRCX.
  1556.  
  1557.           6.8.3.    Example
  1558.  
  1559.              Server: Joe WHISPER #test Jill :Test whisper.
  1560.  
  1561.           7.   User Modes and Properties
  1562.  
  1563.              These are new user modes and properties that have been added.
  1564.              The MODE command as defined in RFC1459 is used to add or
  1565.              remove modes.
  1566.  
  1567.           7.1. OWNER (IRCX +q)
  1568.  
  1569.              The OWNER mode indicates that the user is an owner of a
  1570.              channel.  Only a channel owner can give OWNER mode to another
  1571.              member of that channel, but any owner may remove OWNER mode
  1572.              from themselves.
  1573.  
  1574.              Clients in IRCX mode see owner nicknames with a '.'  prefix
  1575.              and  continue  to  see  hosts  with  a '@' prefix (in results
  1576.              from NAMES, WHO, WHOIS and other commands which list
  1577.              nicknames).
  1578.  
  1579.              Note that HOST mode uses +o, which was  "operator"  mode  in
  1580.              RFC1459.  Syntax for these modes is the same as "operator"
  1581.              mode:
  1582.  
  1583.              MODE <channel> { + | - }q <nick>
  1584.  
  1585.           7.2. GAG (IRCX +z)
  1586.  
  1587.              The GAG mode is applied by a sysop or sysop manager on a user
  1588.              and may not be removed except by a sysop or sysop manager.
  1589.              The user may not be notified when this mode is applied because
  1590.              the mode can be a more effective tool for keeping order if the
  1591.              user doesn't know exactly when it is applied.
  1592.  
  1593.              The server will discard all messages from a user with GAG mode
  1594.              to any other user or to any channel.
  1595.  
  1596.              MODE <nick> { + | - }z
  1597.  
  1598.  
  1599.                                                                    [Page 25]
  1600.  
  1601.  
  1602.  
  1603.  
  1604.              INTERNET-DRAFT                IRCX                   June 1998
  1605.  
  1606.  
  1607.           8.   Channel Modes and Properties
  1608.  
  1609.              New modes and properties have been added to channels.
  1610.  
  1611.              Channels support four mutually exclusive states of visibility:
  1612.              public, private, hidden, and secret.  The visibility of a
  1613.              channel affects which modes and properties are available to a
  1614.              client.
  1615.  
  1616.           8.1. Modes
  1617.  
  1618.              Each channel object contains a number of binary mode settings
  1619.              that can be queried and optionally updated via the RFC1459
  1620.              MODE command.
  1621.  
  1622.           8.1.1.    PUBLIC (RFC1459 default)
  1623.  
  1624.              The channel is public and all information about the channel
  1625.              (except for text messages) can be queried  by  non-members.
  1626.              PUBLIC mode is mutually exclusive with the PRIVATE, HIDDEN and
  1627.              SECRET modes.
  1628.  
  1629.              This mode may be set and queried by sysop managers, owners and
  1630.              hosts of the channel.  It may be queried by sysops, members of
  1631.              the channel, and users.
  1632.  
  1633.           8.1.2.    PRIVATE (RFC1459 +p)
  1634.  
  1635.              The channel is private and only the name, number of members
  1636.              and PICS property can be queried  by  non-members.  PRIVATE
  1637.              mode is mutually exclusive with the PUBLIC, HIDDEN and SECRET
  1638.              modes.
  1639.  
  1640.              This mode may be set by sysop managers, owners and hosts of
  1641.              the channel.  It may be not be queried by sysops or users.
  1642.  
  1643.           8.1.3.    HIDDEN (IRCX +h)
  1644.  
  1645.              The channel is hidden and cannot be located by enumeration
  1646.              queries from non-members. HIDDEN mode is mutually exclusive
  1647.              with  the  PUBLIC, PRIVATE, and SECRET modes.  The purpose of
  1648.              the new HIDDEN channel mode is to permit the existence of
  1649.              channels that cannot be found using the standard  LIST
  1650.              command, but whose properties can be queried if the exact
  1651.              channel name is known.  Thus a HIDDEN channel is the same as
  1652.              a PUBLIC channel except that it cannot be enumerated by using
  1653.              a LIST or LISTX command.
  1654.  
  1655.              This mode may be set and queried like PUBLIC mode.
  1656.  
  1657.           8.1.4.    SECRET (RFC1459 +s)
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.                                                                    [Page 26]
  1664.  
  1665.  
  1666.  
  1667.  
  1668.              INTERNET-DRAFT                IRCX                   June 1998
  1669.  
  1670.  
  1671.              The channel is secret and cannot by located by any query from
  1672.              non-members.  SECRET mode is mutually exclusive with the
  1673.              PUBLIC, PRIVATE, and HIDDEN modes.
  1674.  
  1675.              This mode may be set and queried like PRIVATE mode.
  1676.  
  1677.           8.1.5.    MODERATED (RFC1459 +m)
  1678.  
  1679.              Normally, new channel members may speak.  In MODERATED  mode
  1680.              however, new channel members may not speak by default.  This
  1681.              is achieved by giving all new members the '-v' mode (no voice)
  1682.              for that channel.  Usually -v mode has no effect, but in a
  1683.              MODERATED channel it does.
  1684.  
  1685.              This mode may be set and queried by sysop managers, owners and
  1686.              hosts of the channel.  It may be queried by sysops and members
  1687.              of the channel.  Users may query this mode if the channel is
  1688.              PUBLIC or HIDDEN.
  1689.  
  1690.           8.1.6.    NOEXTERN (RFC1459 +n)
  1691.  
  1692.              NOEXTERN  mode  blocks  messages  from  non-members to the
  1693.              channel. A sysop manager can still send a message to the
  1694.              channel.
  1695.  
  1696.              This mode may be set and queried like MODERATED mode.
  1697.  
  1698.           8.1.7.    TOPICOP (RFC1459 +t)
  1699.  
  1700.              TOPICOP mode permits only channel owners and hosts to change
  1701.              the channel topic property.
  1702.  
  1703.              This mode may be set and queried like MODERATED mode.
  1704.  
  1705.           8.1.8.    INVITE (RFC1459 +i)
  1706.  
  1707.              INVITE mode permits only invited users to enter the channel.
  1708.              Only owners and hosts can issue an invitation when this mode
  1709.              is on.
  1710.  
  1711.              This mode may be set and queried like MODERATED mode.
  1712.  
  1713.           8.1.9.    KNOCK (IRCX +u)
  1714.  
  1715.              The KNOCK extended mode causes a KNOCK message to be sent to
  1716.              owners and hosts of the channel if a user attempts to join a
  1717.              channel and the server denies entrance.
  1718.  
  1719.              This mode may be set and queried like MODERATED mode.
  1720.  
  1721.           8.1.10.   NOFORMAT (IRCX +f)
  1722.  
  1723.              The NOFORMAT channel mode is an indication to the client
  1724.              application not to format text received from  the  channel.
  1725.  
  1726.  
  1727.                                                                    [Page 27]
  1728.  
  1729.  
  1730.  
  1731.  
  1732.              INTERNET-DRAFT                IRCX                   June 1998
  1733.  
  1734.  
  1735.              Normally clients will prefix text messages with "x said y" or
  1736.              "x whispers to y  and  x", if the NOFORMAT mode is set then
  1737.              just the raw text should be displayed moving to the next line
  1738.              at the end of the message.  The client should not echo text
  1739.              sent by the client.  This is to permit custom applications to
  1740.              control the formatting to clients.  Clients may want to inform
  1741.              users that messages can be spoofed with this mode.
  1742.  
  1743.              This mode can only be set by sysop managers.  It can be read
  1744.              by sysop managers, sysops, owners, hosts and members of the
  1745.              channel.  It can be read by users if the channel is PUBLIC or
  1746.              HIDDEN.
  1747.  
  1748.           8.1.11.   NOWHISPER (IRCX +w)
  1749.  
  1750.              The NOWHISPER channel mode will prevent all messages sent to
  1751.              specific nicknames within the context of that channel.
  1752.  
  1753.              This channel mode may be set and read by sysop managers and
  1754.              owners.  It can be read by sysops, hosts and members of the
  1755.              channel.  It can be read by other users if the channel is
  1756.              PUBLIC or HIDDEN.
  1757.  
  1758.           8.1.12.   AUDITORIUM (IRCX +x)
  1759.  
  1760.              The AUDITORIUM channel mode restricts visibility and messaging
  1761.              within a channel.  Members will only see themselves and the
  1762.              hosts/owners in the channel.  Any message sent by a member
  1763.              will only be received by the hosts and owners.  Hosts and
  1764.              owners will see all members in the channel and messages from a
  1765.              host or owner are seen by all channel members.  Ordinary
  1766.              members will not receive JOIN/PART messages from other
  1767.              members.  This mode is designed for channels with so many
  1768.              members that they do not want to see each other.  Note that
  1769.              auditorium mode may only be set at channel creation time using
  1770.              the CREATE command.
  1771.  
  1772.              This mode may be set and read by sysop managers, sysops, and
  1773.              owners.  It may be read by hosts and members of the channel.
  1774.              It can be read by other users if the channel is PUBLIC or
  1775.              HIDDEN.
  1776.  
  1777.           8.1.13.   REGISTERED (IRCX +r)
  1778.  
  1779.              The channel is registered by the administrator of the chat
  1780.              network. The registration procedure is not defined here.  Only
  1781.              the server or server administrator can set this mode.
  1782.  
  1783.              It can be read by sysop managers, sysops, owners, hosts, and
  1784.              members of the channel.  It can be read by users if the
  1785.              channel is PUBLIC or HIDDEN.
  1786.  
  1787.           8.1.14.   SERVICE (IRCX +z)
  1788.  
  1789.  
  1790.  
  1791.                                                                    [Page 28]
  1792.  
  1793.  
  1794.  
  1795.  
  1796.              INTERNET-DRAFT                IRCX                   June 1998
  1797.  
  1798.  
  1799.              A service is monitoring/controlling the channel.  This is an
  1800.              indication  to  the client that message traffic sent to the
  1801.              channel is being monitored by a Chat Service which does not
  1802.              appear as a member in the channel.
  1803.  
  1804.              This mode can only be set by the Chat Server.  It can be read
  1805.              by sysop managers, sysops, owners, hosts and members of the
  1806.              channel.  It can be read by users if the channel is PUBLIC or
  1807.              HIDDEN.
  1808.  
  1809.           8.1.15.   AUTHONLY (IRCX +a)
  1810.  
  1811.              The AUTHONLY channel mode permits channel access only to users
  1812.              who have been authenticated by the server.  Note that an
  1813.              authenticated user is any user that was successfully
  1814.              authenticated with the PASS command or the AUTH command.
  1815.  
  1816.              This mode can be set and read by sysop managers or owners of
  1817.              the channel.  It can be read by sysops, hosts and members of
  1818.              the channel.  It can be read by users if the channel is PUBLIC
  1819.              or HIDDEN.
  1820.  
  1821.           8.1.16.   CLONEABLE (IRCX +d)
  1822.  
  1823.              The CLONEABLE channel mode defines a channel that creates new
  1824.              clone channels if the parent channel is full.  A clone channel
  1825.              is created with the same name as the parent cloneable channel
  1826.              with a numeric suffix starting at 1, ranging to 99.  It is not
  1827.              valid to set the CLONEABLE channel mode of a parent channel
  1828.              that ends with a numeric character.   The clone channel
  1829.              inherits modes and properties from the parent channel when it
  1830.              is set up.  When a clone channel is created, any channel  that
  1831.              has the same name is removed.  This prevents channel takeover
  1832.              of a clone channel.
  1833.  
  1834.              It is advised that only sysop be allowed to set cloneable mode
  1835.              on a channel.  The mode may be read by sysops, owners, hosts
  1836.              and members of the channel. It may be read by users if the
  1837.              channel is PUBLIC or HIDDEN.
  1838.  
  1839.           8.1.17.   CLONE (IRCX +e)
  1840.  
  1841.              The CLONE channel mode defines a channel that was created by
  1842.              the server when a parent CLONEABLE channel becomes full.
  1843.              Users should usually join the parent channel, although a user
  1844.              may join a clone channel that is not full.  A sysop manager
  1845.              can set up a clone channel but only when the channel is being
  1846.              created.
  1847.  
  1848.              This mode can be set by the sysop manager and read like the
  1849.              SERVICE mode.
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.                                                                    [Page 29]
  1856.  
  1857.  
  1858.  
  1859.  
  1860.              INTERNET-DRAFT                IRCX                   June 1998
  1861.  
  1862.  
  1863.           8.2. Properties
  1864.  
  1865.              Each channel object contains a number of properties that can
  1866.              be queried and optionally updated via the IRCX PROP command.
  1867.              Owners and hosts may update a property for their own channel.
  1868.              Sysop Managers and Sysops can use the PROP command on a
  1869.              channel only by becoming host/owner of that channel.  Users
  1870.              and members can read properties only.
  1871.  
  1872.           8.2.1.    OID (R/O)
  1873.  
  1874.              The OID channel property is the internal object identifier for
  1875.              the channel.  As a shortcut, the OID can be optionally used
  1876.              in place of the  full  string  name  of a channel.  If the OID
  1877.              is set to "0", then this feature is not supported on the
  1878.              server.
  1879.  
  1880.              This property may be read by all users, except by ordinary
  1881.              users when the channel is SECRET or PRIVATE.
  1882.  
  1883.           8.2.2.    NAME (R/O)
  1884.  
  1885.              The NAME channel property is the name of the channel (limited
  1886.              to 63 characters, including 1 or 2 characters for channel
  1887.              prefix).  Valid characters are as defined in RFC1459.
  1888.  
  1889.              This property may be set and read like the OID property.
  1890.  
  1891.           8.2.3.    CREATION (R/O)
  1892.  
  1893.              The CREATION channel property is the time that the channel
  1894.              was created, in number of seconds elapsed since midnight
  1895.              (00:00:00), January 1, 1970, (coordinated universal time).
  1896.  
  1897.              This property may be set and read like the OID property.
  1898.  
  1899.           8.2.4.    LANGUAGE
  1900.  
  1901.              The LANGUAGE channel property is the preferred language type.
  1902.              The LANGUAGE property is a string limited to 31 characters.
  1903.              We recommend following the guidelines of RFC1766[6] to form
  1904.              well-understood language-defining strings.
  1905.  
  1906.              This property may be set and read by sysop managers, owners
  1907.              and hosts of the channel.  It may be read by sysop managers,
  1908.              sysops and members.  It may be read by users if the channel is
  1909.              PUBLIC or HIDDEN.
  1910.  
  1911.           8.2.5.    OWNERKEY
  1912.  
  1913.              The OWNERKEY channel property is the owner keyword that will
  1914.              provide owner access when entering the channel.  The OWNERKEY
  1915.              property is limited to 31 characters.
  1916.  
  1917.  
  1918.  
  1919.                                                                    [Page 30]
  1920.  
  1921.  
  1922.  
  1923.  
  1924.              INTERNET-DRAFT                IRCX                   June 1998
  1925.  
  1926.  
  1927.              This property may be set by the sysop manager or channel
  1928.              owner.  It may never be read.
  1929.  
  1930.           8.2.6.    HOSTKEY
  1931.  
  1932.              The HOSTKEY channel property is the host keyword that will
  1933.              provide host (channel op) access when entering the channel.
  1934.              The HOSTKEY property is limited to 31 characters.
  1935.  
  1936.              This property may be set and read like the OWNERKEY property.
  1937.  
  1938.           8.2.7.    MEMBERKEY
  1939.  
  1940.              The MEMBERKEY channel property is the keyword required to
  1941.              enter the channel.  The MEMBERKEY property is limited to 31
  1942.              characters.  This is backwards-compatible with RFC1459 because
  1943.              users can still use the MODE command as an alternative way to
  1944.              set this property.
  1945.  
  1946.              This property may be set and read like the OWNERKEY property.
  1947.  
  1948.           8.2.8.    PICS
  1949.  
  1950.              The PICS channel property is the current PICS rating of the
  1951.              channel. Chat clients that are PICS enabled can use this
  1952.              property to determine if the channel is appropriate for the
  1953.              user.  The PICS property is limited  to 255 characters.  The
  1954.              format for this field is defined by PICS (see
  1955.              http://www.w3.org).
  1956.  
  1957.              This property may be set by sysop managers and read by all.
  1958.              It may not be read by ordinary users if the channel is SECRET.
  1959.  
  1960.           8.2.9.    TOPIC
  1961.  
  1962.              The TOPIC channel property is the current topic of the
  1963.              channel.  The TOPIC property is limited to 160 characters.
  1964.  
  1965.              This property may be set and read by sysop managers, owners
  1966.              and hosts of the channel.  It may be read by sysops and
  1967.              members of the channel.  It may be read by users if the
  1968.              channel is PUBLIC or HIDDEN.
  1969.  
  1970.           8.2.10.   SUBJECT
  1971.  
  1972.              The SUBJECT channel property is a string that can contain
  1973.              subject keywords for search engines.  The SUBJECT property is
  1974.              limited to 31 characters.
  1975.  
  1976.              This property may be set and read like the TOPIC property.
  1977.  
  1978.           8.2.11.   CLIENT
  1979.  
  1980.  
  1981.  
  1982.  
  1983.                                                                    [Page 31]
  1984.  
  1985.  
  1986.  
  1987.  
  1988.              INTERNET-DRAFT                IRCX                   June 1998
  1989.  
  1990.  
  1991.              The CLIENT channel property contains client-specified
  1992.              information.  The format is not defined by the server.  The
  1993.              CLIENT property is limited to 255 characters.
  1994.  
  1995.              This property may be set and read like the TOPIC property.
  1996.  
  1997.           8.2.12.   ONJOIN
  1998.  
  1999.              The ONJOIN channel property contains a string to be sent (via
  2000.              PRIVMSG) to a user after the user has joined the channel.  The
  2001.              channel name is displayed as the sender of the message. Only
  2002.              the user joining the channel will see this message.  Multiple
  2003.              lines can be generated by embedding '\n' in the string.  The
  2004.              ONJOIN property is limited to 255 characters.
  2005.  
  2006.              This property may be set and read by sysop managers, owners
  2007.              and hosts of the channel. It may additionally  be read by
  2008.              sysops.
  2009.  
  2010.           8.2.13.   ONPART
  2011.  
  2012.              The ONPART channel property contains a string that is sent
  2013.              (via NOTICE) to a user after they have parted from the
  2014.              channel.  The channel name is displayed as the sender of the
  2015.              message.  Only the user parting the channel will see this
  2016.              message.  Multiple lines can be generated  by  embedding '\n'
  2017.              in the string.  The ONPART property is limited to 255
  2018.              characters.
  2019.  
  2020.              This property may be set and read like the ONJOIN property.
  2021.  
  2022.           8.2.14.   LAG
  2023.  
  2024.              The LAG channel property contains a numeric value between 0 to
  2025.              2 seconds.  The server will add an artificial delay of that
  2026.              length between subsequent messages from the same member.  All
  2027.              messages to the channel are affected.
  2028.  
  2029.              This property may be set and read by sysop managers and
  2030.              owners.  It can additionally be read by sysops, hosts, and
  2031.              members of the channel.  It can be read by users if the
  2032.              channel is PUBLIC or HIDDEN.
  2033.  
  2034.           8.2.15.   ACCOUNT
  2035.  
  2036.              The  ACCOUNT channel property contains an implementation-
  2037.              dependent string for attaching a security account.  This
  2038.              controls access to the channel  using the native OS security
  2039.              system.  The ACCOUNT property is limited to 31 characters.
  2040.  
  2041.              This property may be set by sysop managers. It can only be
  2042.              read by sysop managers, sysops and owners of the channel.
  2043.  
  2044.           8.2.16.   CLIENTGUID
  2045.  
  2046.                                                                    [Page 32]
  2047.  
  2048.  
  2049.  
  2050.  
  2051.              INTERNET-DRAFT                IRCX                   June 1998
  2052.  
  2053.  
  2054.              The CLIENTGUID channel property contains a GUID that defines
  2055.              the client protocol to be used within the channel.
  2056.  
  2057.              This property may be set and read like the LAG property.
  2058.  
  2059.           8.2.17.   SERVICEPATH
  2060.  
  2061.              The SERVICEPATH channel property contains the path of a server
  2062.              side extension that is used to control the channel operation.
  2063.              Details are implementation-dependent.
  2064.  
  2065.              This property may be set and read like the LAG property.
  2066.  
  2067.           9.   IRCX Command Responses
  2068.  
  2069.              The new extended IRCX numeric replies follow the same
  2070.              convention as IRC replies, with a specific range for command
  2071.              responses and another range for error results.  The IRCX
  2072.              command responses are in the range of 800 to 899 and 900 to
  2073.              999 for the error results.
  2074.  
  2075.           9.1. Command Replies
  2076.  
  2077.              800 - IRCRPL_IRCX
  2078.  
  2079.              <state> <version> <package-list> <maxmsg> <option-list>
  2080.  
  2081.              The response to the IRCX and ISIRCX commands.  The <state>
  2082.              indicates if the client has IRCX mode enabled (0 for disabled,
  2083.              1 for enabled).  The <version> is the version of the IRCX
  2084.              protocol starting at 0.   The <package-list> contains a list
  2085.              of authentication packages supported by the server.  The
  2086.              package name of "ANON" is reserved to indicate that anonymous
  2087.              connections are permitted.  The <maxmsg> defines the maximum
  2088.              message size permitted, with the standard being 512. The
  2089.              <option-list> contains a list of options supported by the
  2090.              server; these are implementation-dependent.  If no options are
  2091.              available, the  '*'  character is used.
  2092.  
  2093.              801 - IRCRPL_ACCESSADD
  2094.  
  2095.              <object> <level> <mask> <timeout> <user> :<reason>
  2096.  
  2097.              Response to a successful ACCESS ADD command.  The <object> is
  2098.              the name of the object to which the access restrictions apply
  2099.              (i.e. channel name or user name).  The <level> is the level of
  2100.              access being added (i.e. GRANT, DENY).  The <mask> is the
  2101.              selection mask.  If no mask is provided in the ACCESS command,
  2102.              then the default mask of *!*@*$* is used.  The <timeout> is
  2103.              the amount of time this access entry will last.  The <user> is
  2104.              the one who added the new ACCESS record.  The <reason> is the
  2105.              reason supplied in the ACCESS ADD command.
  2106.  
  2107.              802 - IRCRPL_ACCESSDELETE
  2108.  
  2109.  
  2110.                                                                    [Page 33]
  2111.  
  2112.  
  2113.  
  2114.  
  2115.              INTERNET-DRAFT                IRCX                   June 1998
  2116.  
  2117.  
  2118.              <object> <level> <mask>
  2119.  
  2120.              Response to a successful ACCESS DELETE command.  See reply
  2121.              801 for explanation of the fields.
  2122.  
  2123.              803 - IRCRPL_ACCESSSTART
  2124.  
  2125.              <object> :Start of access entries
  2126.  
  2127.              Beginning of a list of access entries.  <object> is the object
  2128.              to which the access restrictions apply (i.e. channel name or
  2129.              user name).  The next message will be an IRCRPL_ACCESSLIST or
  2130.              IRCRPL_ACCESSEND reply.
  2131.  
  2132.              804 - IRCRPL_ACCESSLIST
  2133.  
  2134.              <object> <level> <mask> <timeout> <user> :<reason>
  2135.  
  2136.              One entry in a list of access entries.  See reply 801 for
  2137.              explanation of the fields.
  2138.  
  2139.              805 - IRCRPL_ACCESSEND
  2140.  
  2141.              <object> :End of access entries
  2142.  
  2143.              End of a list of access entries. See reply 803 for explanation
  2144.              of the field. This reply will always follow an
  2145.              IRCRPL_ACCESSSTART or IRCRPL_ACCESSLIST reply.
  2146.  
  2147.              806 - IRCRPL_EVENTADD
  2148.  
  2149.              <event> <mask>
  2150.  
  2151.              The acknowledgment response to the EVENT ADD command. The
  2152.              <event> contains the name of the event added. The <mask> is
  2153.              the selection mask.  If no mask is provided in the EVENT
  2154.              command, then the default mask of *!*@*$* is used.
  2155.  
  2156.              807 - IRCRPL_EVENTDEL
  2157.  
  2158.              <event> <mask>
  2159.  
  2160.              The acknowledgment response to the EVENT DELETE command.  The
  2161.              <event> contains the name of the deleted event.  The <mask> is
  2162.              the selection mask.  If no mask is provided in the EVENT
  2163.              command, then the default mask of *!*@*$* is used.
  2164.  
  2165.              808 - IRCRPL_EVENTSTART
  2166.  
  2167.              :Start of events
  2168.  
  2169.              Response to the EVENT LIST <event> message that indicates the
  2170.              start of the event list.
  2171.  
  2172.  
  2173.  
  2174.                                                                    [Page 34]
  2175.  
  2176.  
  2177.  
  2178.  
  2179.              INTERNET-DRAFT                IRCX                   June 1998
  2180.  
  2181.  
  2182.              809 - IRCRPL_EVENTLIST
  2183.  
  2184.              <event> <mask>
  2185.  
  2186.              Response to the EVENT LIST <event> message that displays a
  2187.              list of current events that the client is interested in.
  2188.  
  2189.              810 - IRCRPL_EVENTEND
  2190.  
  2191.              :End of events
  2192.  
  2193.              Response to the EVENT LIST <event> message that indicates the
  2194.              end of the event list.
  2195.  
  2196.              811 - IRCRPL_LISTXSTART
  2197.  
  2198.              :Start of ListX
  2199.  
  2200.              First reply to a LISTX (extended list) command.  Will always
  2201.              be followed by a reply of type 812, 816 or 817.
  2202.  
  2203.              812 - IRCRPL_LISTXLIST
  2204.  
  2205.              <channel> <modes> <members> <member limit> :<topic>
  2206.  
  2207.              Single list item in an extended list of channels. The
  2208.              <channel> is the name of the channel in the list. The <modes>
  2209.              specify the current modes set on the channel.  <members> lists
  2210.              the members currently in the channel. <member limit> returns
  2211.              the member limit of the channel.  <topic> returns the topic of
  2212.              the channel.
  2213.  
  2214.              813 - IRCRPL_LISTXPICS
  2215.  
  2216.              :<PICS-rating>
  2217.  
  2218.              PICS rating string for the last channel listed (follows an 812
  2219.              message).
  2220.  
  2221.              816 - IRCRPL_LISTXTRUNC
  2222.  
  2223.              :Truncation of ListX
  2224.  
  2225.              Last reply to a LISTX command, either because the user asked
  2226.              for a limited list of channels or because the server truncated
  2227.              the list to prevent output flooding.  Always follows a reply
  2228.              of type 811, 812 or 813.
  2229.  
  2230.              817 - IRCRPL_LISTXEND
  2231.  
  2232.              :End of ListX
  2233.  
  2234.              Last reply to a LISTX command, indicating that the list has
  2235.              ended.  Always follows a reply of type 811, 812 or 813.
  2236.  
  2237.  
  2238.                                                                    [Page 35]
  2239.  
  2240.  
  2241.  
  2242.  
  2243.              INTERNET-DRAFT                IRCX                   June 1998
  2244.  
  2245.  
  2246.              818 - IRCRPL_PROPLIST
  2247.  
  2248.              <object> <property> :<value>
  2249.  
  2250.              A value in a property list. The <object> is the name of the
  2251.              object (i.e., channel name).  The <property> is the property
  2252.              in the list.  The <value> is the value of the property listed.
  2253.  
  2254.              819 - IRCRPL_PROPEND
  2255.  
  2256.              <object> :End of properties
  2257.  
  2258.              Last message in a property list.
  2259.  
  2260.           9.2. IRCX Error Replies.
  2261.  
  2262.              900 - IRCERR_BADCOMMAND
  2263.  
  2264.              <command> :Bad command
  2265.  
  2266.              Response to an incorrectly formatted command.
  2267.  
  2268.              901 - IRCERR_TOOMANYARGUMENTS
  2269.  
  2270.              <command> :Too many arguments
  2271.  
  2272.              Response to too many arguments being provided for a command.
  2273.  
  2274.              902 - IRCERR_BADFUNCTION
  2275.  
  2276.              <command> :Bad function
  2277.  
  2278.              Response to a command that supports functions, with invalid
  2279.              function sent by the user.  For example, the EVENT command
  2280.              supports functions.
  2281.  
  2282.              903 - IRCERR_BADLEVEL
  2283.  
  2284.              <command> :Bad level
  2285.  
  2286.              Response to an ACCESS command with a bad level specified (i.e.
  2287.              not GRANT, DENY...)
  2288.  
  2289.              904 - IRCERR_BADTAG
  2290.  
  2291.              <command> :Bad message tag.
  2292.  
  2293.              Response to a DATA/REQUEST/REPLY with an incorrect message
  2294.              tag.
  2295.  
  2296.              905 - IRCERR_BADPROPERTY
  2297.  
  2298.              <channel> :Bad property specified
  2299.  
  2300.  
  2301.  
  2302.                                                                    [Page 36]
  2303.  
  2304.  
  2305.  
  2306.  
  2307.              INTERNET-DRAFT                IRCX                   June 1998
  2308.  
  2309.  
  2310.              Response to a channel property command with a bad property
  2311.              specified.
  2312.  
  2313.              906 - IRCERR_BADVALUE
  2314.  
  2315.              <channel> :Bad value specified
  2316.  
  2317.              Response to an attempt to set an integer property to a string
  2318.              value (PROP command).
  2319.  
  2320.              907 - IRCERR_RESOURCE
  2321.  
  2322.              :Not enough resources
  2323.  
  2324.              Server does not have enough resources to perform command.
  2325.  
  2326.              908 - IRCERR_SECURITY
  2327.  
  2328.              :No permissions to perform command
  2329.  
  2330.              For security reasons, the command/function/operation is not
  2331.              permitted for this level of client.
  2332.  
  2333.              909 - IRCERR_ALREADYAUTHENTICATED
  2334.  
  2335.              <package> :Already authenticated
  2336.  
  2337.              The client is already authenticated with the server.
  2338.  
  2339.              910 - IRCERR_AUTHENTICATIONFAILED
  2340.  
  2341.              <package> :Authentication failed
  2342.  
  2343.              The authentication failed due to a bad userid/password or
  2344.              server/network failure.
  2345.  
  2346.              911 - IRCERR_AUTHENTICATIONSUSPENDED
  2347.  
  2348.              <package> :Authentication suspended for this IP
  2349.  
  2350.              Authentication has been temporary disabled due to too many
  2351.              authentication failures from this IP.
  2352.  
  2353.              912 - IRCERR_UNKNOWNPACKAGE
  2354.  
  2355.              <package> :Unsupported authentication package
  2356.  
  2357.              The authentication package specified is not known to the
  2358.              server.  ISIRCX command will return a list of supported
  2359.              authentication packages.
  2360.  
  2361.              913 - IRCERR_NOACCESS
  2362.  
  2363.              <command> :No access
  2364.  
  2365.  
  2366.                                                                    [Page 37]
  2367.  
  2368.  
  2369.  
  2370.  
  2371.              INTERNET-DRAFT                IRCX                   June 1998
  2372.  
  2373.  
  2374.              Response to a user trying to change the ACCESS list for an
  2375.              object the user does not have sufficient privileges to alter.
  2376.  
  2377.              914 - IRCERR_DUPACCESS
  2378.  
  2379.              :Duplicate access entry
  2380.  
  2381.              An access entry already exists for the specified user mask.
  2382.  
  2383.              915 - IRCERR_MISACCESS
  2384.  
  2385.              :Unknown access entry
  2386.  
  2387.              Response to ACCESS DELETE command when server does not
  2388.              recognize the entry to be removed.
  2389.  
  2390.              916 - IRCERR_TOOMANYACCESSES
  2391.  
  2392.              :Too many access entries
  2393.  
  2394.              Response to ACCESS ADD command when maximum number of access
  2395.              entries has been reached.
  2396.  
  2397.              918 - IRCERR_EVENTDUP
  2398.  
  2399.              <event> <mask> :Duplicate event entry
  2400.  
  2401.              The user has asked for an event that is already being sent.
  2402.  
  2403.              919 - IRCERR_EVENTMIS
  2404.  
  2405.              <event> <mask> :Unknown event entry
  2406.  
  2407.              Response to event remove command when user is not already
  2408.              receiving the event specified.
  2409.  
  2410.              920 - IRCERR_NOSUCHEVENT
  2411.  
  2412.              <event> :No such event type
  2413.  
  2414.              Response to event add command when server does not recognize
  2415.              the event specified.
  2416.  
  2417.              921 - IRCERR_TOOMANYEVENTS
  2418.  
  2419.              <event> :Too many events specified
  2420.  
  2421.              Response to event add command when user may not add another
  2422.              event to monitor.
  2423.  
  2424.              923 - IRCERR_NOWHISPER
  2425.  
  2426.              <object> :Does not permit whispers
  2427.  
  2428.  
  2429.  
  2430.                                                                    [Page 38]
  2431.  
  2432.  
  2433.  
  2434.  
  2435.              INTERNET-DRAFT                IRCX                   June 1998
  2436.  
  2437.  
  2438.              Response to whisper command when channel does not permit
  2439.              whispers.
  2440.  
  2441.              924 - IRCERR_NOSUCHOBJECT
  2442.  
  2443.              <object> :No such object found
  2444.  
  2445.              Response to an attempt to define a property for an object
  2446.              which  can't be found (PROP command).
  2447.  
  2448.              925 - IRCERR_NOTSUPPORTED
  2449.  
  2450.              <object> :Command not supported by object
  2451.  
  2452.              Response to PROP and ACCESS commands when a bad object was
  2453.              specified in the command.
  2454.  
  2455.              926 - IRCERR_CHANNELEXIST
  2456.  
  2457.              <channel> :Channel already exists.
  2458.  
  2459.              The channel name in the CREATE command already exists on the
  2460.              server and the +c mode was specified.
  2461.  
  2462.              927 - IRCERR_ALREADYONCHANNEL
  2463.  
  2464.              <channel> :Already in the channel.
  2465.  
  2466.              Response to join command when user is already in the channel.
  2467.  
  2468.              999 - IRCERR_UNKNOWNERROR
  2469.  
  2470.              :Unknown error code <error-code>
  2471.  
  2472.              The internal error generated doesn't map to a valid IRCX error
  2473.              reply.  The error code is implementation-dependent.
  2474.  
  2475.           10.  Security Considerations
  2476.  
  2477.              Security issues are also discussed in the authentication
  2478.              section.
  2479.  
  2480.              The IRCX and ISIRCX commands return a set of authentication
  2481.              mechanisms supported by the server. This method is open to a
  2482.              middle man attack whereby an attacker modifies the list of
  2483.              returned authentication methods and only offers a clear-text
  2484.              password  transaction.  In  order to avoid this type of
  2485.              attack, only authentication methods with a challenge response
  2486.              mechanism should be used.
  2487.  
  2488.              Since all administration commands for RFC1459 and IRCX are
  2489.              sent in clear text, a stream layer encryption mechanism like
  2490.              SSL[5] or IPSEC is required to protect the integrity and
  2491.              confidentiality of the transactions.  The mechanisms for
  2492.  
  2493.  
  2494.                                                                    [Page 39]
  2495.  
  2496.  
  2497.  
  2498.  
  2499.              INTERNET-DRAFT                IRCX                   June 1998
  2500.  
  2501.  
  2502.              establishing these connection are outside the scope of this
  2503.              document.
  2504.  
  2505.           11.  Acknowledgements
  2506.  
  2507.              Specific acknowledgments must be extended to the following
  2508.              people as the editors of the previous versions:
  2509.  
  2510.              Kent Cedola, Lisa Dusseault, and Thomas Pfenning
  2511.  
  2512.              In addition it has benefited from many rounds of review and
  2513.              comments. As so, any list of contributors is bound to be
  2514.              incomplete; please regard the following as only a selection
  2515.              from the group of people who have contributed to make this
  2516.              document what it is today.
  2517.  
  2518.              In alphabetical order:
  2519.  
  2520.              Josh Cohen, Alex Hoppman, David Kurlander, Robert Uttecht, and
  2521.              Teoman Smith
  2522.  
  2523.           12.  References
  2524.  
  2525.              [1] "Internet Relay Chat Protocol", Network Working Group RFC
  2526.              1459, J. Oikarinen, D. Reed, May 1993
  2527.  
  2528.              [2]  The Unicode Consortium, "The Unicode Standard Version
  2529.              2.0", Addison Wesley Developers Press, July 1996
  2530.  
  2531.              [3] "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1",
  2532.              Network  Working Group RFC 2060, M. Crispin, December 1996
  2533.  
  2534.              [4] "Simple Authentication and Security Layer (SASL)", Work
  2535.              in Progress, draft-myers-auth-sasl-07.txt, J. Myers, December
  2536.              1996
  2537.  
  2538.              [5] "The SSL Protocol Version 3.0", Work in Progress, draft-
  2539.              ietf-tls-ssl-version3-00.txt, Alan O. Freier, Philip Karlton,
  2540.              Paul C. Kocher, November 1996
  2541.  
  2542.              [6] "Tags for the Identification of Languages", Network
  2543.              Working Group RFC 1766, H. Alvestrand, March 1995
  2544.  
  2545.           13.  Authors' Addresses
  2546.  
  2547.              Dalen Abraham
  2548.  
  2549.              Microsoft Corporation
  2550.  
  2551.              One Microsoft Way
  2552.  
  2553.              Redmond, WA 98052
  2554.  
  2555.              EMail: dalena@microsoft.com
  2556.  
  2557.  
  2558.                                                                    [Page 40]
  2559.  
  2560.  
  2561.